#ifndef SSL_WRAPPER_H
#define SSL_WRAPPER_H

#include <openssl/ssl.h>
#include <openssl/err.h>
// 根据需要引入GmSSL特定头文件，而不是通用头文件
#include <gmssl/sm3.h>
#include <gmssl/sm2.h>
#include <gmssl/sm4.h>

// 初始化OpenSSL (GmSSL API直接使用，无需引擎)
int init_openssl_engine(void);

// 清理OpenSSL资源
void cleanup_openssl(void);

// 创建SSL上下文
SSL_CTX *create_ssl_context(int is_server);

// 为套接字设置SSL
SSL *setup_ssl_for_socket(SSL_CTX *ctx, int sock);

// 关闭SSL连接
void ssl_close(SSL *ssl);

// 安全地发送数据
int ssl_send(SSL *ssl, const void *buf, int len);

// 安全地接收数据
int ssl_recv(SSL *ssl, void *buf, int len);

// 清理SSL上下文
void ssl_ctx_cleanup(SSL_CTX *ctx);

#endif /* SSL_WRAPPER_H */